# @Time : 2025-01-02 15:51
# @Author : Fioman 
# @Phone : 13149920693
"""
Eap相关的一些枚举类型
"""
from enum import Enum


class OperationMode(Enum):
    """
    Eap的操作模式,Eap模式为1,本地模式为0
    """
    Eap模式 = "1"
    本地模式 = "0"


class EapMsgType(Enum):
    """
    Eap数据发送到前端的消息类型,前面是消息类型,后面对应的是
    web对应的变量的值,什么意思呢,就是后面的这个变量当作是发送给前端数据的
    的字典的键,对应于前端Model里面的变量
    """

    PcDataCraft = "serverPcDataCraft"  # 设备工艺表web对应变量
    PcDataManual = "serverPcDataManual"  # 手动参数调整表
    PcDataAlarm = "serverPcDataAlarm"  # 警表
    PcDataEmp = "serverPcDataEmp"  # #上下机记录上传
    PcDataStatus = "serverPcDataStatus"  # 实时采集数据表
    PcDataCount = "serverPcDataCount"  # 备计数表
    PcSignalStatus = "serverPcSignalStatus"  # 备实时信号表
    EapSignalStatus = "serverEapSignalStatus"  # AP实时信号表
    SizeLayoutData = "serverSizeLayoutData"  # 示sizeLayoutData表的数据, 从后台获取


class PcSignalType(Enum):
    """
    设备实时信号类型
    """
    POWER = "设备上机/停机"  # 上机为1,停机(待机)为0
    PRODUCT = "生产开始/结束"  # 生产开始为1,结束为0
    WAITMATERIAL = "设备待料"  # 待料为1, 复位为0
    TOTALALARM = "设备总故障状态"  # 故障为1,复位为0
    EMERGENCYSTOP = "紧急停止"  # 故障为1,复位为0
    STOPLINE = "设备重大故障(停线故障)"  # 故障为1,复位为0
    AUTOMANUAL = "Eap模式/本机模式"  # Eap模式为1,本机模式为0
    MATERIALOK = "设备通知EAP资料加载完毕"  # 加载完毕为1,加载失败为2
    UPDATEPLANOK = "通知EAP任务修改完毕"  # 修改完毕为1,修改失败为2
    DELETEPLANOK = "通知EAP任务删除完毕"  # 删除完毕为1,删除失败为2
    SCANLOTUPLOAD = "设备通知EAP扫描LOT号"  # lot号


if __name__ == '__main__':
    # 通过成员名称来获取成员
    # OperationMode.Eap模式 <enum 'OperationMode'>
    print(OperationMode["Eap模式"], type(OperationMode["Eap模式"]))

    a = OperationMode.Eap模式  # 假如获取的是这值
    print(a.name, type(a.name))  # Eap模式 <class 'str'>

    # 通过成员值来获取成员
    # OperationMode.Eap模式 <enum 'OperationMode'>
    print(OperationMode("1"), type(OperationMode("1")))

    # 通过成员来获取成员的名称和值,以及他们的类型
    # OperationMode.Eap模式 <enum 'OperationMode'>
    print(OperationMode.Eap模式, type(OperationMode.Eap模式))

    # Eap模式 <class 'str'>
    print(OperationMode.Eap模式.name, type(OperationMode.Eap模式.name))
    # 0 <class 'str'>
    print(OperationMode.本地模式.value, type(OperationMode.本地模式.value))
